from enum import Enum
from dataclasses import dataclass, field
from typing import Literal

PRODUCTION_LITERAL = Literal['flex', 'flex_1channel_1000', 'flex_1channel_50',
'flex_8channel_50', 'flex_8channel_1000',
'flex_96channel_200', "flex_96channel_1000"]

PRODUCTION_TYPE_LITERAL = Literal["opentrons", "millipore", "ultima"]


@dataclass
class ProductionDescription:
    name: PRODUCTION_LITERAL
    p_type: PRODUCTION_TYPE_LITERAL
    description: str = field(default="empty")


class Productions(Enum):
    Robot = ProductionDescription(name="flex", p_type="opentrons")
    PipetteP1000Channel1 = ProductionDescription(name="flex_1channel_1000", p_type="opentrons")
    PipetteP1000Channel8 = ProductionDescription(name="flex_8channel_1000", p_type="opentrons")
    PipetteP50Channel1 = ProductionDescription(name="flex_1channel_50", p_type="opentrons")
    PipetteP50Channel8 = ProductionDescription(name="flex_8channel_1000", p_type="opentrons")
    PipetteP1000Channel96 = ProductionDescription(name="flex_96channel_1000", p_type="opentrons")
    PipetteP200Channel96 = ProductionDescription(name="flex_96channel_200", p_type="opentrons")
